home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / net / ipip.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.3 KB  |  56 lines

  1. #ifndef __NET_IPIP_H
  2. #define __NET_IPIP_H 1
  3.  
  4. #include <linux/if_tunnel.h>
  5. #include <net/ip.h>
  6.  
  7. /* Keep error state on tunnel for 30 sec */
  8. #define IPTUNNEL_ERR_TIMEO    (30*HZ)
  9.  
  10. struct ip_tunnel
  11. {
  12.     struct ip_tunnel    *next;
  13.     struct net_device    *dev;
  14.  
  15.     int            recursion;    /* Depth of hard_start_xmit recursion */
  16.     int            err_count;    /* Number of arrived ICMP errors */
  17.     unsigned long        err_time;    /* Time when the last ICMP error arrived */
  18.  
  19.     /* These four fields used only by GRE */
  20.     __u32            i_seqno;    /* The last seen seqno    */
  21.     __u32            o_seqno;    /* The last output seqno */
  22.     int            hlen;        /* Precalculated GRE header length */
  23.     int            mlink;
  24.  
  25.     struct ip_tunnel_parm    parms;
  26.  
  27.     struct ip_tunnel_prl_entry    *prl;        /* potential router list */
  28.     unsigned int            prl_count;    /* # of entries in PRL */
  29. };
  30.  
  31. struct ip_tunnel_prl_entry
  32. {
  33.     struct ip_tunnel_prl_entry    *next;
  34.     __be32                addr;
  35.     u16                flags;
  36. };
  37.  
  38. #define IPTUNNEL_XMIT() do {                        \
  39.     int err;                            \
  40.     int pkt_len = skb->len - skb_transport_offset(skb);        \
  41.                                     \
  42.     skb->ip_summed = CHECKSUM_NONE;                    \
  43.     ip_select_ident(iph, &rt->u.dst, NULL);                \
  44.                                     \
  45.     err = ip_local_out(skb);                    \
  46.     if (net_xmit_eval(err) == 0) {                    \
  47.         stats->tx_bytes += pkt_len;                \
  48.         stats->tx_packets++;                    \
  49.     } else {                            \
  50.         stats->tx_errors++;                    \
  51.         stats->tx_aborted_errors++;                \
  52.     }                                \
  53. } while (0)
  54.  
  55. #endif
  56.